﻿//using BZ.Logger;
//using HalconDotNet;
//using NDK.Module.BLL;
//using NDK.Module.Model;
//using NDK.Motion.BLL;
//using NDK.Motion.Monitor;
//using NDK.Utils;
//using System;
//using System.Collections.Generic;
//using System.ComponentModel;
//using System.Threading;
//using System.Windows.Forms;
//using static NDK.Module.Model.Common;

//namespace NDK.Module.StationLogic
//{
//    public class BlankingTrayLocation : StationLogicBase
//    {
//        #region 通用
//        public override event PropertyChangedEventHandler PropertyChanged;
//        private StationStep _curStep = StationStep.WaitMacInit;
//        public static BlankingTrayLocation Instance = new BlankingTrayLocation();
//        private BlankingTrayLocation() : base()
//        {
//            this.Name = "下料Tray盘定位";
//        }
//        //步骤字段、属性
//        private StationStep _step = StationStep.WaitMacInit;
//        [Monitor(Description = "当前步骤")]
//        public StationStep Step
//        {
//            get
//            {
//                return _step;
//            }
//            set
//            {
//                if (_curStep != value)
//                {
//                    _step = value;
//                    _curStep = value;
//                    FileUtils.WriteLogToTxt($"{Step.ToString()}  CT:{Math.Round((double)swStepTime.ElapsedMilliseconds / 1000, 3)}s", logFold, logBaseInfo, isWriteLog);
//                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(value.ToString()));
//                    swStepTime.Restart();
//                }
//            }
//        }
//        #endregion


//        #region 变量
//        public event delegateUpdatePLC delegateUpdatePLCEvent;
//        HImage hImage;
//        #endregion

//        /// <summary>
//        /// 工站初始化
//        /// </summary>
//        public override void Init()
//        {
//            base.Init();
//            Step = StationStep.WaitMacInit;
//            logBaseInfo = "下料Tray盘定位";
//            hImage = new HImage();
//            Machine.OmronPLC_Down.WriteBool(stModule_10_PC_PLC_B_0, false);
//        }
//        public override void ActionProcess()
//        {
//            if (ConsumerAdress != "ATL")
//                return;
//            try
//            {
//                switch (this.Step)
//                {
//                    case StationStep.WaitMacInit:
//                        Step = StationStep.Start;
//                        break;
//                    case StationStep.Start:
//                        Step = StationStep.等待PLC请求拍照信号;
//                        break;
//                    case StationStep.等待PLC请求拍照信号:
//                        if (Machine.OmronPLC_Down.ReadBool(stModule_10_PLC_PC_B_0))
//                        {
//                            Machine.DicOutputIO["下料Tray定位CCD光源触发"].ON();
//                            Step = StationStep.相机拍照;
//                        }
//                        break;
//                    case StationStep.相机拍照:
//                        hImage = PublicMethod.GradImage("下料上CCD", Machine.DirExp["下料上CCD"]);
//                        Machine.DicOutputIO["下料Tray定位CCD光源触发"].OFF();
//                        Step = StationStep.视觉计算处理;
//                        break;

//                    case StationStep.视觉计算处理:
//                        List<DataItem> listDataItem = EventVisoion.PosionRefresh(new PosionImageRefreshEventArgs()
//                        {
//                            FileName = "DownTray",
//                            outDataName = "Tray",
//                            Imagesname = new List<string>() { "Image0" },
//                            Images = new List<HImage>() { hImage },
//                            SN = DateTime.Now.ToString("yyyyMMddHHmmssff"),
//                            panNum = "2",
//                            panNum1 = "2",
//                        });
//                        short[] IsExistInt = new short[listDataItem.Count];
//                        string ResLog=string.Empty;
//                        for (int i = 0; i < listDataItem.Count; i++)
//                        {
//                            if (listDataItem[i].Value == 9999 || listDataItem[i].Value.ToString() == "NaN")
//                                IsExistInt[i] = 0;
//                            else
//                                IsExistInt[i] = Convert.ToInt16(listDataItem[i].Value);
//                            ResLog += IsExistInt[i].ToString() + ",";
//                        }
//                        AppendUiLog.Log($"上料Tray盘定位：{ResLog} !", LogType.Info);
//                        //FileUtils.WriteLogToTxt("下料Tray盘定位：" + ResLog, logFold, "上下料tray盘", isWriteLog);
//                        Machine.OmronPLC_Down.WriteShort16s(stModule_10_PC_PLC_Pdt_0_TestResult, IsExistInt);
//                        Step = StationStep.发送拍照完成信号;
//                        break;

//                    case StationStep.发送拍照完成信号:
//                        Machine.OmronPLC_Down.WriteBool(stModule_10_PC_PLC_B_0, true);
//                        Step = StationStep.End;
//                        break;

//                    case StationStep.End:
//                        if (!Machine.OmronPLC_Down.ReadBool(stModule_10_PLC_PC_B_0))
//                        {
//                            Machine.OmronPLC_Down.WriteBool(stModule_10_PC_PLC_B_0, false);
//                            if (LoadingProduct.Instance.SaveImage(hImage, "下料tray图片"))
//                            {
//                                hImage = null;
//                            }
//                            Step = StationStep.WaitMacInit;
//                        }
//                        break;
//                }
//            }
//            catch (Exception ex)
//            {
//                UILog_Error($"[ {logBaseInfo} ActionProcess Thread ERROR] {ex.Message}");
//                if (AlarmPause(logBaseInfo, $"当前状态:{Step} 报警异常:{ex.Message}", "点击确定，再试一次；点击取消，继续运行", "再试一次", "继续运行") == DialogResult.OK)
//                {

//                }
//            }
//        }

//        public override void EmptyActionProcess()
//        {
//            ActionProcess();
//        }

//        public override void GRRActionProcess()
//        {
//            ActionProcess();
//        }

//        public enum StationStep
//        {
//            /// <summary>
//            /// 等待机台初始化
//            /// </summary>
//            [Description("等待机台初始化")]
//            WaitMacInit,
//            [Description("开始")]
//            Start,
//            等待PLC请求拍照信号,
//            相机拍照,
//            视觉计算处理,
//            发送拍照完成信号,
//            [Description("工站完成")]
//            End,
//        }
//    }
//}
